package com.study.redis.simple;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

/**
 * Create by zhaihongwei on 2018/2/27
 */
public class RedisPoolDemo {

    public static void main(String[] args) {
        // 连接池配置
        JedisPoolConfig config = new JedisPoolConfig();
        // 最大空闲链接数，数量自己评估，不要超过ApasaraDB for Redis 每个实例最大的链接数
        config.setMaxIdle(200);
        // 最大连接数, 数量自己评估，不要超过ApsaraDB for Redis每个实例最大的连接数
        config.setMaxTotal(300);
        config.setTestOnBorrow(false);
        config.setTestOnReturn(false);

        // 创建链接池
        JedisPool pool = new JedisPool(config,"localhost",6379,3000);
        Jedis jedis = null;
        try {
            // 从链接池中获取链接
            jedis = pool.getResource();

            String redis = jedis.get("redis");
            System.out.println("Get Key redis ReturnValue: " + redis);
            jedis.select(1);
            redis = jedis.get("redis");
            System.out.println("Get Key redis ReturnValue: " + redis);
            /// ... do stuff here ... for example
            jedis.select(2);
            jedis.set("foo", "bar");
            String foobar = jedis.get("foo");
            System.out.println("Get Key foo ReturnValue: " + foobar);
            jedis.zadd("sose", 0, "car");
            jedis.zadd("sose", 0, "bike");
            Set<String> sose = jedis.zrange("sose", 0, -1);
            for (String so : sose) {
                System.out.println("sose : " + so);
            }
        } finally {
            if (jedis != null) {
                // 释放资源
                jedis.close();
            }
        }
        // ... when closing your application:
        // 销毁链接池
        pool.destroy();
    }
}
